import XEUtils from 'xe-utils'

// let _dicts = {}
let _dicts = {
  //险种
  INSUTYPE: [
    { value: '城镇职工', label: '城镇职工' },
    { value: '城乡居民', label: '城乡居民' }
  ],
  //就诊类型
  MDTRT_TYPE: [
    { value: '门诊', label: '门诊' },
    { value: '住院', label: '住院' },
    { value: '门慢门特', label: '门慢门特' }
  ],
  //药品类型
  DRUG_TYPE: [
    { value: '按固定比例负担药品', label: '按固定比例负担药品' },
    { value: '国家2021年新增目录药品', label: '国家2021年新增目录药品' },
    { value: '北京医保超国家医保药品目录药品', label: '北京医保超国家医保药品目录药品' }
  ],
  //药品分类
  DRUGLIST_TYPE: [
    { value: '中成药', label: '中成药' },
    { value: '西药', label: '西药' },
    { value: '中药饮片', label: '中药饮片' }
  ],
  //医院等级
  MEDINSLV: [
    { value: '一级及以下', label: '一级及以下' },
    { value: '二级', label: '二级' },
    { value: '三级', label: '三级' }
  ],
  //医院类型 (医疗机构类别)
  MEDINS_TYPE: [
    { value: '综合', label: '综合' },
    { value: '专科', label: '专科' }
  ],
  //专科类型
  SPCY_TYPE: [
    { value: '妇科', label: '妇科' },
    { value: '儿科', label: '儿科' }
  ],
  AAA027:[
    { value: '110000', label: '海淀区' },
    { value: '120000', label: '朝阳区' },
  ]
}

export function initDict(objects) {
  _dicts = { ..._dicts, ...objects }
}

export function getDict(name) {
  var _dict = _dicts[name]
  if (!_dict) {
    console.error('[dict]There is no dictionary named '.concat(name))
    return []
  }
  return XEUtils.clone(_dict, true)
}

/**
 * 获取字典
 * @param {*} name 字典名称
 * @param {*} arr 排除或包含列表
 * @param {*} type except|include(default)
 */
export function getMapping(name, arr, type) {
  type = type || 'include'
  var _dict = getDict(name)
  if (arr) {
    if (type === 'include') {
      return _dict.filter(item => XEUtils.includes(arr, item.value))
    }
    if (type === 'except') {
      return _dict.filter(item => !XEUtils.includes(arr, item.value))
    }
  } else {
    return _dict
  }
}

/**
 * 获取字典展示值
 * @param {*} name 字典名称
 * @param {*} value 待寻找label的值
 */
export function getMappingLabel(name, value) {
  const dict = getMapping(name)
  if (dict.length === 0) {
    return ''
  }
  const item = dict.find(t => t.value === value)
  if (!item) {
    return ''
  }
  return item.label
}
